/**
 * @file liste_niveau.h
 * Definit les caracteristiques des niveaux.
 */
#ifndef _LISTE_NIVEAU_H
#define _LISTE_NIVEAU_H
#include "niveau.h"
#include <iostream>
using namespace std;

/**
/struct Structure de liste de niveau
*/
struct liste_niveau
{
       Niveau* niv;///@param niv pointeur sur Niveau
       int nbrNiveau;///@param nbrNiveau entier nombre de niveau dans le jeu
};

/**
@brief cree une liste de niveau en allouant la place
@param chaine de caractère constante filename
@return pointeur sur liste de niveau
*/
liste_niveau* creerListeNiveauFichier(const char filename[]);

/**
@brief supprime la liste de niveau (supprime les informations et libère la mémoire)
@param liste_niveau* lniv
@return none
*/
void supprimeListeNiveau(liste_niveau* lniv);

/**
@brief affiche la liste de niveau
@param liste_niveau* lniv
@return none
*/
void afficheListeNiveau(liste_niveau* lniv);

/**
@brief recupère le pointeur du niveau dans la liste de niveau
@param liste_niveau* constante lniv
@return pointeur sur Niveau
*/
Niveau* ListeNiveauGetNiveau(const liste_niveau* lniv);

/**
@brief recupère le nombre de niveau dans la liste de niveau
@param liste_niveau* constante lniv
@return entier
*/
int ListeNiveauGetNbrNiveau(const liste_niveau* lniv);

/**
@brief change le niveau
@param liste_niveau* lniv, Niveau* niv
@return none
*/
void ListeNiveauSetNiveau(liste_niveau* lniv, Niveau* niv);

/**
@brief change le nombre de niveau
@param liste_niveau* lniv, entier nbr
@return none
*/
void ListeNiveauSetNbrNiveau(liste_niveau* lniv,int nbr);

/**
@brief recherche un terrain particulier dans 1 niveau
@param liste_niveau* lniv,entiers numNiv numTer
@return pointeur sur Terrain
*/
Terrain* lnivChercheTerrain(liste_niveau* lniv,int numNiv,int numTer);

/**
@brief cherche un niveau dans une liste de niveau
@param liste_niveau* lniv,entiers numNiv
@return pointeur sur Niveau
*/
Niveau* lnivChercheNiveau(liste_niveau* lniv,int numNiv);
#endif
